home *** CD-ROM | disk | FTP | other *** search
/ MacHack 1997 / MacHack 1997.toast / Hacks / Hacks ’96 / FinderFlocks / Shell / init.cp < prev    next >
Text File  |  1996-06-22  |  3KB  |  128 lines

  1. #include    "Shell.h"
  2. //#include    "AfterDarkUtils.h"
  3.  
  4. extern WindowRecord        Wind, CntlWind;
  5. extern WindowPtr        gWindPtr, gCntlWindPtr;
  6. extern Boolean            gDoneFlag;
  7. extern Rect                gDeskRect;
  8. extern Boolean            gCQDAvailable;
  9.  
  10. // The parameter block pieces
  11. extern char                        errorStr[256];
  12. extern struct QDGlobalsCopy            qglobs; 
  13. extern struct
  14. {
  15.     short             monitorCount;
  16.     MonitorData        monitorList[6];
  17. }monInfo;
  18. extern struct GMParamBlock        gParamBlock;
  19.  
  20.  
  21. void    InitParamBlock(void);
  22.  
  23. /*-------------------------------------------------------------------------
  24. initshell()            Inits all the application-specific variables...
  25. -------------------------------------------------------------------------*/
  26.  
  27. void initshell(void)
  28. {
  29.     MenuHandle        mhndl; 
  30.     Rect            temprect;
  31.     short             err, cnt;
  32.     unsigned long    seed;
  33.     
  34.     
  35.     /* Get Bounding box of Desktop  */
  36.     gDeskRect = (**GetGrayRgn()).rgnBBox;
  37.     
  38.     /* Reset random number generator  */
  39.     GetDateTime(&seed);
  40.     qd.randSeed = seed;
  41.  
  42.     /* Read in menus, draw the bar...
  43.     mhndl = GetMenu(APPLE_ID);
  44.     if(mhndl == nil)
  45.     {
  46.         SysBeep(10);
  47.         ExitToShell();
  48.     }
  49.     AddResMenu(mhndl, 'DRVR');
  50.     InsertMenu(mhndl, 0);
  51.     (*mhndl)->menuID = APPLE_ID;
  52.     
  53.     mhndl = GetMenu(FILE_ID);
  54.     if(mhndl == nil)
  55.     {
  56.         SysBeep(10);
  57.         ExitToShell();
  58.     }
  59.     InsertMenu(mhndl, 0);
  60.     (*mhndl)->menuID = FILE_ID;
  61.     
  62.     mhndl = GetMenu(EDIT_ID);
  63.     if(mhndl == nil)
  64.     {
  65.         SysBeep(10);
  66.         ExitToShell();
  67.     }
  68.     InsertMenu(mhndl, 0);
  69.     (*mhndl)->menuID = EDIT_ID;
  70.     DrawMenuBar(); */
  71.     
  72.     // Set up the After Dark param block
  73.     InitParamBlock();
  74. }
  75.  
  76. void InitParamBlock(void)
  77. {
  78.     // put gParamBlock together
  79.     gParamBlock.monitors = (MonitorsInfoPtr)&monInfo;
  80.     gParamBlock.qdGlobalsCopy = &qglobs;
  81.     gParamBlock.errorMessage = (StringPtr)errorStr;
  82.  
  83.     // Set up QDGlobals
  84.     qglobs.qdThePort = gWindPtr;
  85.     BlockMove(&qd.black, &(qglobs.qdBlack), sizeof(Pattern));
  86.     BlockMove(&qd.white, &(qglobs.qdWhite), sizeof(Pattern));
  87.     BlockMove(&qd.gray, &(qglobs.qdGray), sizeof(Pattern));
  88.     BlockMove(&qd.ltGray, &(qglobs.qdLtGray), sizeof(Pattern));
  89.     BlockMove(&qd.dkGray, &(qglobs.qdDkGray), sizeof(Pattern));
  90.     BlockMove(&qd.arrow, &(qglobs.qdArrow), sizeof(Cursor));
  91.     BlockMove(&qd.screenBits, &(qglobs.qdScreenBits), sizeof(BitMap));
  92.     qglobs.qdRandSeed = qd.randSeed;
  93.     
  94.     gParamBlock.colorQDAvail = gCQDAvailable;
  95.     gParamBlock.systemConfig = 0;
  96.     
  97.     
  98.     // Set up Monitor Info
  99.     /* Check for ColorQD */
  100.     if(gCQDAvailable)
  101.     {
  102.         GDHandle        gdh;
  103.         short            numdevs = 0;
  104.         
  105.         /* Get first device rect */
  106.         gdh = GetDeviceList();
  107.         if(gdh != 0L)
  108.         {
  109.             monInfo.monitorList[numdevs].bounds = (**gdh).gdRect;
  110.             monInfo.monitorList[numdevs].curDepth = (*((*gdh)->gdPMap))->pixelSize;
  111.             numdevs++;
  112.             
  113.             /* Get the rest */    
  114.             while(numdevs < 6)
  115.             {
  116.                 gdh = GetNextDevice(gdh);
  117.                 if(gdh == 0L)
  118.                     break;
  119.                 monInfo.monitorList[numdevs].bounds = (**gdh).gdRect;
  120.                 monInfo.monitorList[numdevs].curDepth = (*((*gdh)->gdPMap))->pixelSize;
  121.                 numdevs++;
  122.             }
  123.             monInfo.monitorCount = numdevs;
  124.         }
  125.     }
  126. }
  127.  
  128.